﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Entidades.Eventos;
using Negocio.Eventos;

public partial class Eventos_GestionarReserva : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        btnBuscar.ServerClick += new EventHandler(btnBuscar_ServerClick);
        btnNuevo.ServerClick += new EventHandler(btnNuevo_ServerClick);
        
        if (IsPostBack) //por accion
        {
            List<EveReserva> eveReservaList = getFiltroEvento().listarReserva();

            Session["listaReservasEncontradas"] = null;
            Session["listaReservasEncontradas"] = eveReservaList;
            fillReservaTable(eveReservaList);
        }
        else //por carga inicial
        {
            if (Session["listaReservasEncontradas"] != null)
            {
                List<EveReserva> eveReservaList = (List<EveReserva>)Session["listaReservasEncontradas"];
                fillReservaTable(eveReservaList);
            }


        }
    }

    void btnNuevo_ServerClick(object sender, EventArgs e)
    {
        Response.Redirect("frmRegistrarReserva.aspx");
    }

    void btnBuscar_ServerClick(object sender, EventArgs e)
    {
        
    }

    void fillReservaTable(List<EveReserva> eveReservaListTMP)
    {
        Session["listaReservasEncontradas"] = eveReservaListTMP;

        if (eveReservaListTMP != null)
        {
            if (eveReservaListTMP.Count > 0)
            {
                foreach (EveReserva item in eveReservaListTMP)
                {
                    TableRow tr1 = new TableRow();

                    TableCell tc1 = new TableCell(); //Cliente
                    Label lbl1 = new Label();
                    lbl1.Text = item.Gen_Cliente.nombre;
                    tc1.Controls.Add(lbl1);

                    TableCell tc2 = new TableCell(); //Tipo Documento
                    Label lbl2 = new Label();
                    lbl2.Text = item.Gen_Cliente.tipoDocumento;
                    tc2.Controls.Add(lbl2);

                    TableCell tc3 = new TableCell(); //Numero Documento
                    Label lbl3 = new Label();
                    lbl3.Text = item.Gen_Cliente.NroDocumento;
                    tc3.Controls.Add(lbl3);

                    TableCell tc4 = new TableCell(); //Tipo Reserva
                    Label lbl4 = new Label();
                    lbl4.Text = selectTipoReserva.Value;
                    tc4.Controls.Add(lbl4);

                    TableCell tc5 = new TableCell(); //tipo Evento
                    Label lbl5 = new Label();
                    lbl5.Text = item.Eve_Evento.Eve_Tipo_evento.nombre;
                    tc5.Controls.Add(lbl5);

                    TableCell tc6 = new TableCell(); //Fecha evento
                    Label lbl6 = new Label();
                    lbl6.Text = item.fechaReserva.Value.ToString("dd-MM-yyyy");
                    tc6.Controls.Add(lbl6);

                    TableCell tc7 = new TableCell(); //Fecha Realizacion
                    Label lbl7 = new Label();
                    lbl7.Text = item.fechaRealizacion.Value.ToString("dd-MM-yyyy");
                    tc7.Controls.Add(lbl7);

                    TableCell tc8 = new TableCell(); //Estado
                    Label lbl8 = new Label();
                    lbl8.Text = ConstantesEventos.getDescripcionEstadoReserva(item.estado.Value);
                    tc8.Controls.Add(lbl8);

                    TableCell tc9 = new TableCell(); //Button Editar
                    tc9.HorizontalAlign = HorizontalAlign.Center;


                    ImageButton imgbuttonEditar = new ImageButton();
                    imgbuttonEditar.ImageUrl = "css/img/editar.png";
                    imgbuttonEditar.ImageAlign = ImageAlign.AbsMiddle;
                    imgbuttonEditar.ID = item.idReserva.ToString();
                    imgbuttonEditar.Click += new ImageClickEventHandler(imgbuttonEditar_Click);
                    imgbuttonEditar.Attributes.Add("runat", "server");

                    if (DateTime.Now < item.fechaReserva.Value.AddDays(3))
                    {
                        tc9.Controls.Add(imgbuttonEditar);
                    }

                    tr1.Cells.Add(tc1);
                    tr1.Cells.Add(tc2);
                    tr1.Cells.Add(tc3);
                    tr1.Cells.Add(tc4);
                    tr1.Cells.Add(tc5);
                    tr1.Cells.Add(tc6);
                    tr1.Cells.Add(tc7);
                    tr1.Cells.Add(tc8);
                    tr1.Cells.Add(tc9);

                    tableReservas.Rows.Add(tr1);
                }
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('No se encontraron registros para la búsqueda realizada');", true);
            }
        }
        else
        {
            Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('No se encontraron registros para la búsqueda realizada');", true); 
        }
    }

    void imgbuttonEditar_Click(object sender, ImageClickEventArgs e)
    {
        ImageButton imageBtn = (ImageButton)sender;
        Response.Redirect("frmModificarReserva.aspx?idReserva="+imageBtn.ID);
    }

    private EveFiltroReserva getFiltroEvento()
    {
        if (selectTipoDocumento.Value == "0" && txtNumeroDocumento.Value == String.Empty && txtFechaRealizacion.Value == String.Empty)
        {
            Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('Debe ingresar criterios validos para la búsqueda.');", true);
            return null;
        }
        else
        {
            DateTime fetechaRealizacion = Convert.ToDateTime(txtFechaRealizacion.Value == String.Empty ? null : txtFechaRealizacion.Value);

            foreach (string key in Request.Form)
            {

                if (key == "txtFechaRealizacion")
                {
                    fetechaRealizacion = Convert.ToDateTime(Request.Form[key] == String.Empty ? null : Request.Form[key]);
                    break;
                }
            }

            return new EveFiltroReserva
            {
                TipoDocumento = selectTipoDocumento.Value,
                NumeroDocumento = txtNumeroDocumento.Value,
                FechaRealizacion = fetechaRealizacion
            };
        }
    }
}